﻿
using System;
using System.Runtime.Serialization;
using V82;
using V82.Перечисления;//Ссылка;
namespace V82.Перечисления//Ссылка
{
	[DataContract]
	public enum ВидыСтоимости
	{
		[NonSerialized]
		ПустаяСсылка = - 1,
	///<summary>
	///Выпуск по фактической стоимости
	///</summary>
		[EnumMember(Value = "{\"Ссылка\":\"b2e40314-c8c5-47b8-afe9-cc10d5c3f288\", \"Представление\":\"Фактическая\"}")]
		Фактическая = 0,//Выпуск по фактической стоимости
	///<summary>
	///Выпуск по плановой стоимости
	///</summary>
		[EnumMember(Value = "{\"Ссылка\":\"1f1f9aa6-7fa5-4492-92ce-063b57a893ba\", \"Представление\":\"Плановая\"}")]
		Плановая = 1,//Выпуск по плановой стоимости
	///<summary>
	///Отклонение фактической стоимости выпуска от плановой
	///</summary>
		[EnumMember(Value = "{\"Ссылка\":\"02a28c86-38d7-473e-b6e2-9b094f1aa976\", \"Представление\":\"Отклонение\"}")]
		Отклонение = 2,
	}
	public static partial class ВидыСтоимости_Значения//:ПеречислениеСсылка
	{
		///<summary>
		///Выпуск по фактической стоимости
		///</summary>
		public static readonly Guid Фактическая = new Guid("10cce9af-c3d5-88f2-47b8-c8c5b2e40314");//Выпуск по фактической стоимости
		///<summary>
		///Выпуск по плановой стоимости
		///</summary>
		public static readonly Guid Плановая = new Guid("3b06ce92-a857-ba93-4492-7fa51f1f9aa6");//Выпуск по плановой стоимости
		///<summary>
		///Отклонение фактической стоимости выпуска от плановой
		///</summary>
		public static readonly Guid Отклонение = new Guid("099be2b6-1a4f-76a9-473e-38d702a28c86");
		public static ВидыСтоимости Получить(this ВидыСтоимости Значение, byte[] Ссылка)
		{
			return Получить(Значение, new Guid(Ссылка));
		}
		public static ВидыСтоимости Получить(this ВидыСтоимости Значение, Guid Ссылка)
		{
			if(Ссылка == Фактическая)
			{
				return ВидыСтоимости.Фактическая;
			}
			else if(Ссылка == Плановая)
			{
				return ВидыСтоимости.Плановая;
			}
			else if(Ссылка == Отклонение)
			{
				return ВидыСтоимости.Отклонение;
			}
			return ВидыСтоимости.ПустаяСсылка;
		}
		public static byte[] Ключ(this ВидыСтоимости Значение)
		{
			return Ссылка(Значение).ToByteArray();
		}
		public static Guid Ссылка(this ВидыСтоимости Значение)
		{
			switch (Значение)
			{
				case ВидыСтоимости.Фактическая: return Фактическая;
				case ВидыСтоимости.Плановая: return Плановая;
				case ВидыСтоимости.Отклонение: return Отклонение;
			}
			return Guid.Empty;
		}
	}
}